iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
SideProject30

UVA題型研究系列 第 10

DAY10:Replacement symbol

  • 分享至 

  • xImage
  •  

13 UVA272 TeX Quotes
內容
TeX 是一種由 Donald Knuth 所發展出的一套文書排版軟體。這套軟體可以將原始文件檔加上一些像字型等型態後,轉成一份很漂亮的文件。而一份漂亮的文件是需要用 和 " 來把別人說的話給「引」出來,而不是用大部份鍵盤上有的 " 。雖然鍵盤裡通常不會有這種有方向的雙引號鍵,不過上面有左單引號 ` (有人叫 backquote ),和右單引號 ' (有人叫 apostrophe 或 quote )。你可以在你的鍵盤上找一下,不過要小心不要將 ` 與 \ ( backslash 鍵)搞混了。而在 TeX 裡,使用者可以輸入兩個左單引號 來構成一個左雙引號 `` ,或者是兩個右單引號 '' 來構造一個右單引號 '' ,不過呢,通常大家打字時都很習慣用普通的雙引號 " 來引述別人的話。

如果原始文件檔內容是:

"To be or not to be," quoth the bard, "that is the question."

則 TeX 作出來的文件並不會是我們所想要的:

To be or not to be," quoth the bard, that is the question."

為了要得到上面的文件,我們需要把原始文件變成這個樣子:

To be or not to be,'' quoth the bard, that is the question.''

你現在必須要寫一個程式,將普通的雙引號("),轉成有方向性的雙引號,而其它文字則不變。而在把普通的雙引號換掉的時候,要特別注意,當要開始引述一句話時要用 ,而結束引述時要用 '' 。不用擔心會有多層巢狀引號的情形,也就是第一個引號一定是用 來代替,再來用 '',然後用 `` ,接著用 '' ,依此類推。

輸入說明
輸入是若干列的文字,其中有偶數個雙引號( " ),以 end-of-file 做結束。輸出的文字必須和輸入的一模一樣,除了:

  • 每一組雙引號的第一個 " 必須用兩個 ` 字元(就是 `` )來代替
  • 每一組雙引號的第二個 " 必須用兩個 ' 字元( 就是 '')來代替。

輸出說明
同上

範例輸入 #1
"To be or not to be," quoth the Bard, "that
is the question".
The programming contestant replied: "I must disagree.
To C' or not to C', that is The Question!"
範例輸出 #1
To be or not to be,'' quoth the Bard, that
is the question''.
The programming contestant replied: ``I must disagree.
To C' or not to C', that is The Question!''

題意:將普通的雙引號("),轉成有方向性的雙引號,當要開始引述一句話時要用 `` ,而結束引述時要用 ''
解題:輸入一字串,重新排版後輸出

c = 0  # 初始化一個變數c,用於追蹤雙引號的奇偶數
while True:  # 進入無限迴圈
    try:
        n = input()  # 嘗試讀取輸入
    except EOFError:  # 如果遇到EOFError(通常表示輸入結束),則跳出迴圈
        break

    a = []  # 初始化一個空列表a,用於存儲處理後的字元
    for i in n:  # 迴圈遍歷輸入的每個字符
        if i == "\"":  # 如果字符是雙引號
            if c == 0:  # 如果c為0,表示此時需要插入「``」
                a.append("``")
                c = 1  # 設置c為1,以便下一個雙引號插入「''」
            else:  # 如果c不為0,表示此時需要插入「''」
                a.append("''")
                c = 0  # 設置c為0,以便下一個雙引號插入「``」
        else:  # 如果字符不是雙引號,直接將其加入列表a中
            a.append(i)

    print("".join(a))  # 將處理後的字符列表a轉換為字符串並輸出

上一篇
DAY9:Find the same letters
下一篇
DAY11:date judgment
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言